[IA64] domheap: Allocate PV privregs pages from domain heap
authorAlex Williamson <alex.williamson@hp.com>
Thu, 17 Jan 2008 19:05:43 +0000 (12:05 -0700)
committerAlex Williamson <alex.williamson@hp.com>
Thu, 17 Jan 2008 19:05:43 +0000 (12:05 -0700)
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
xen/arch/ia64/xen/domain.c

index 955502d454e4b16c17154e4ace8444bc6bc319eb..ac2ab12700420afb45f6648d6e52000a7c86cd6d 100644 (file)
@@ -400,7 +400,7 @@ void relinquish_vcpu_resources(struct vcpu *v)
        if (HAS_PERVCPU_VHPT(v->domain))
                pervcpu_vhpt_free(v);
        if (v->arch.privregs != NULL) {
-               free_xenheap_pages(v->arch.privregs,
+               free_domheap_pages(virt_to_page(v->arch.privregs),
                                   get_order_from_shift(XMAPPEDREGS_SHIFT));
                v->arch.privregs = NULL;
        }
@@ -501,6 +501,7 @@ static void vcpu_share_privregs_with_guest(struct vcpu *v)
 int vcpu_late_initialise(struct vcpu *v)
 {
        struct domain *d = v->domain;
+       struct page_info *page;
        int rc, order;
 
        if (HAS_PERVCPU_VHPT(d)) {
@@ -511,7 +512,11 @@ int vcpu_late_initialise(struct vcpu *v)
 
        /* Create privregs page. */
        order = get_order_from_shift(XMAPPEDREGS_SHIFT);
-       v->arch.privregs = alloc_xenheap_pages(order);
+       page = alloc_domheap_pages(NULL, order, 0);
+       if (page == NULL)
+               return -ENOMEM;
+       
+       v->arch.privregs = page_to_virt(page);
        BUG_ON(v->arch.privregs == NULL);
        memset(v->arch.privregs, 0, 1 << XMAPPEDREGS_SHIFT);
        vcpu_share_privregs_with_guest(v);